The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
It is typically useful to monitor the health of computer processes, such as processes that implement or are executed by applications, application servers, database servers, and/or other computer components. The monitoring may be used for a variety of purposes, such as generating reports or statistics for a system administrator, taking automatic administrative actions to attempt to revive failed processes, or reconfiguring a system to account for failed processes.
In a distributed environment there may be a large number processes centrally managed by a monitoring server. These processes may be spread across a vast number of hosts and over many types of computer networks. In such an environment, it may be a challenge to detect the health of these remote processes in a real-time or near real-time fashion.
One solution may be to have a monitoring server ping the processes at intervals. Another solution may be to have the processes themselves, or agents thereof, ping the monitoring server at intervals. However, for a variety of reasons, there is often an undesirable period of delay between the failure of a process and the monitoring server recognizing that a failure has occurred.